001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Dec 1, 2002
005 * Time: 2:09:10 AM
006 */
007
008 package EVolve.util.painters;
009
010 import EVolve.visualization.AutoImage;
011 import EVolve.visualization.Predictor;
012
013 public class MissRatePainter extends PredictionPainter{
014 private long predictCounter, hitCounter, lastX;
015 private float maxMiss = 0;
016
017 public MissRatePainter(Predictor[] predictor,int targetType) {
018 super(predictor,targetType);
019 predictCounter = 0;
020 hitCounter = 0;
021 lastX = 0;
022 maxMiss = 0;
023 }
024
025 public String getName() {
026 return "Miss Prediction Metric Painter";
027 }
028
029 public void paint(AutoImage image, long x, long y, long z) {
030 predictor[(int)y].newTarget2(z);
031
032 if (x>=miss.length) {
033 int [] newmetrics = new int[miss.length+200];
034 for (int i =0; i< newmetrics.length; i++)
035 if (i<miss.length)
036 newmetrics[i] = miss[i];
037 else newmetrics[i] = 0;
038 miss = newmetrics;
039 }
040
041 if (x != lastX) {
042 if (predictCounter != 0)
043 miss[(int)lastX] = (int)(300*(predictCounter - hitCounter)/predictCounter);
044 if (maxMiss < (float)miss[(int)lastX]/300) {
045 maxMiss = (float)miss[(int)lastX]/300;
046 }
047 for (int i = (int)lastX; i<x; i++)
048 {
049 miss[i] = miss[(int)lastX];
050 if (miss[(int)lastX] != 0)
051 image.setColor(i,miss[(int)lastX],colorRed);
052 }
053 lastX = x;
054 }
055 if (validateTarget(y,z)) {
056 predictCounter++;
057 if (predictor[(int)y].isCorrect()) {
058 hitCounter ++;
059 }
060 }
061 }
062
063 public float getMaxMiss() {
064 return maxMiss;
065 }
066
067 public float getMissrate(int X) {
068 return ((float)miss[X])/3;
069 }
070 }